/**
 * Copyright 2010, Lars J. Nilsson <http://www.larsan.net> 
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package net.larsan.dconf.cli;

import net.larsan.dconf.jbc.JBCPreferencesFactory;
import net.larsan.dconf.jbc.ModuleAggregate;

import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.guiceyfruit.Injectors;
import org.guiceyfruit.support.CloseFailedException;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Application {
	
	public static void main(String[] args) {
		// TODO Make these props options
		System.setProperty("java.net.preferIPv4Stack", "true");
		System.setProperty("java.util.prefs.PreferencesFactory", JBCPreferencesFactory.class.getName());
		Injector inj = Guice.createInjector(ModuleAggregate.append(new CliModule()));
		try {
			Connector con = inj.getInstance(Connector.class);
			BasicParser parser = new BasicParser();
			CommandLine cl = parser.parse(con.getOptions(), args);
			con.exec(cl);
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			try {
				Injectors.close(inj);
			} catch (CloseFailedException e) {
				e.printStackTrace();
			}
		}
	}
}
